home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1833 / 1833.xpi / chrome / yoono.jar / content / yoono / yoono-links.js < prev    next >
Text File  |  2009-12-16  |  5KB  |  145 lines

  1.  
  2. var yoonoLinks = {
  3.   
  4. init : function () {
  5.   this.bundle = document.getElementById("yoono-links-bundle");
  6.   
  7.   // Init menuitems states
  8.   this.updateMenus();
  9.   this.icon = document.getElementById("yoono-links-icon");
  10.   this.icon.setAttribute("status",YOONO_PREFS.get("highlight.enable")?"enabled":"disabled");
  11.   this.icon.setAttribute("tooltiptext",this.bundle.getString("yoono-links.loading"));
  12.   
  13.   // Watch for yoolink flash loading
  14.   yoono.main.getYServices().observer.addObserver(this,"yoolink.*");
  15.   
  16.   // Watch for tab change and website loading in order to display secured icon
  17.   var container = gBrowser.tabContainer;
  18.   this.tabListener=function(){yoonoLinks.onTabSelect();};
  19.   container.addEventListener("TabSelect", this.tabListener, false);
  20.   
  21.   this.tabLoadListener=function(e){yoonoLinks.onTabLoad(e);};
  22.   gBrowser.addEventListener("load", this.tabLoadListener, true);
  23.   
  24.   var contextMenu = document.getElementById("contentAreaContextMenu");
  25.   if (contextMenu)
  26.     contextMenu.addEventListener("popupshowing", yoonoLinks.onContextShow, false);
  27. },
  28.  
  29. uninit : function () {
  30.   yoono.main.getYServices().observer.removeObserver(this,"yoolink.*");
  31.   
  32.   var container = gBrowser.tabContainer;
  33.   container.removeEventListener("TabSelect", this.tabListener, false);
  34.   
  35.   gBrowser.removeEventListener("load", this.tabLoadListener, true);
  36. },
  37.  
  38. updateMenus : function () {
  39.   // Update menu in statusicon
  40.   var menu = document.getElementById("yoono-links-menu");
  41.   var items = menu.getElementsByTagName("menuitem");
  42.   for(var i=0; i<items.length; i++) {
  43.     var item=items[i];
  44.     item.setAttribute("checked",YOONO_PREFS.get("highlight."+item.getAttribute("pref"))?"true":"false");
  45.   }
  46.   // Update menu in main button
  47.   var menu = document.getElementById("yoono-links-menu-main-button");
  48.   var items = menu.getElementsByTagName("menuitem");
  49.   for(var i=0; i<items.length; i++) {
  50.     var item=items[i];
  51.     item.setAttribute("checked",YOONO_PREFS.get("highlight."+item.getAttribute("pref"))?"true":"false");
  52.   }
  53. },
  54.  
  55. onTabSelect : function () {
  56.   var browser = gBrowser.selectedTab.linkedBrowser;
  57.   var isSecured=browser.contentDocument.location.href.match(/^https:/);
  58.   this.icon.setAttribute("secured",isSecured?"true":"false");
  59.   if (isSecured) {
  60.     this.icon.setAttribute("tooltiptext",this.bundle.getString("yoono-links.https"));
  61.   } else {
  62.     this.icon.setAttribute("tooltiptext","");
  63.   }
  64. },
  65. onTabLoad : function (event) {
  66.   if (event.originalTarget instanceof HTMLDocument) {
  67.     var doc = event.originalTarget;
  68.     if (event.originalTarget.defaultView.frameElement) {
  69.       // Frame within a tab was loaded.
  70.       return;
  71.     }
  72.     this.onTabSelect();
  73.   }
  74. },
  75.  
  76. observe : function (topic, param) {
  77.   if (topic=="yoolink.flash-loaded") {
  78.     if (param==true) {
  79.       this.icon.removeAttribute("loading");
  80.       this.icon.setAttribute("tooltiptext","");
  81.     } else {
  82.       this.icon.setAttribute("tooltiptext",this.bundle.getString("yoono-links.flash"));
  83.     }
  84.   } else if (topic=="yoolink.enable") {
  85.     this.icon.setAttribute("status",param?"enabled":"disabled");
  86.   }
  87. },
  88.  
  89. action : function (item) {
  90.   this._setPref("highlight."+item.getAttribute("pref"),item.getAttribute("checked")=="true");
  91. },
  92.  
  93. toggle : function () {
  94.   this._setPref("highlight.enable",!YOONO_PREFS.get("highlight.enable"));
  95. },
  96.  
  97. onContextShow : function (event) {
  98.   var search = document.getElementById("yoono-links-context");
  99.   var selectedText = getBrowserSelection(16);
  100.   search.hidden = selectedText&&selectedText.length>0?false:true;
  101.   if (!selectedText)
  102.     return false;
  103.   if (selectedText.length > 15)
  104.     selectedText = selectedText.substr(0,15) + "...";
  105.   
  106.   search.label=yoonoLinks.bundle.getFormattedString("yoono-links.context-menu", [selectedText]);
  107. },
  108.  
  109. onContextClick : function () {
  110.   var selectedText = getBrowserSelection(32);
  111.   if (selectedText) {
  112.     var contextMenu = document.getElementById("contentAreaContextMenu");
  113.     // Compute a "viewport" position
  114.     var eventData = {
  115.       x: contextMenu.boxObject.x-gBrowser.mCurrentBrowser.boxObject.x+gBrowser.contentWindow.scrollX,
  116.       y: contextMenu.boxObject.y-gBrowser.mCurrentBrowser.boxObject.y+gBrowser.contentWindow.scrollY,
  117.       keywords : selectedText, 
  118.       windowId : YOONO_YEXTIF.getWindowId(window)
  119.     };
  120.     yoono.main.getYServices().observer.notifyObservers("yoolink.search",eventData);
  121.   }
  122. },
  123.  
  124. _setPref : function (pref, value) {
  125.   YOONO_PREFS.set(pref,value);
  126.   
  127.   if (pref == "highlight.enable") {
  128.     this.icon.setAttribute("status",value?"enabled":"disabled");
  129.     yoono.main.getYServices().observer.notifyObservers("yoolink.enable",value);
  130.   } 
  131.   this.updateMenus();
  132.   
  133. }
  134.  
  135. };
  136.  
  137. function waitForYServices() {
  138.   if (yoono && yoono.main && yoono.main.getYServices() && yoono.main.getYServices().observer)
  139.     return yoonoLinks.init();
  140.   window.setTimeout(waitForYServices,500);
  141. }
  142.  
  143. window.addEventListener("load", waitForYServices, false);
  144. window.addEventListener("unload", function() { yoonoLinks.uninit(); }, false);
  145.